import axios from 'axios';

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost:8400', // 设置基础URL
  timeout: 10000, // 设置超时时间
});

// 定义响应拦截器 
service.interceptors.response.use(
  (response) => {
    //response 返回的是整个promise对象，
    console.log("出发响应拦截器");
    console.log("响应数据:", response);
    
    // 根据后端数据结构统一处理业务逻辑
    //res是promise对象中的data
    const res = response.data;
    console.log("后端响应数据:", res);
    // 如果后端业务状态码200表示成功，返回数据
    if (res.status === 200) {
      console.log('后端返回状态码为200以后的操作');
    // 直接返回需要的数据部分
      return res.data; 
    } else {
      // 业务错误处理，例如提示错误信息
      console.error('请求失败:', res.message || '未知错误');
      return Promise.reject(new Error(res.message || 'Error'));
    }
  },
  (error) => {
    console.error('请求失败:', error);
    // HTTP网络错误处理
    if (error.response) {
      // 请求成功发出且服务器也响应了状态码，但状态码超出 2xx 范围
      switch (error.response.status) {
        case 401:
          console.error('未授权，请重新登录');
          break;
        case 403:
          console.error('拒绝访问');
          break;
        case 404:
          console.error('请求资源不存在');
          break;
        case 500:
          console.error('服务器内部错误');
          break;
        default:
          console.error('请求失败', error.response.status);
      }
    } else if (error.request) {
      // 请求已经成功发起，但没有收到响应
      console.error('未收到响应', error.request);
    } else {
      // 发送请求时出了点问题
      console.error('请求错误', error.message);
    }
    return Promise.reject(error);
  }
);

// 导出请求实例，其他文件可以引入使用
export default service;